package com.hibase.core.mybatis.registrar;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.Collection;
import java.util.Map;

/**
 * hibase通用mapper
 *
 * @author hufeng
 * @date 2019/06/27
 */
public interface HibaseMapper<T> extends BaseMapper<T> {

    /**
     * 根据 ID 修改，对象中内容为空，则更新为null
     *
     * @param entity 实体对象
     * @return
     */
    int updateNullById(@Param(Constants.ENTITY) T entity);

    /**
     * 根据 条件 修改，对象中内容为空，则更新为null
     *
     * @param entity 实体对象
     * @return
     */
    int updateNull(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);

    /**
     * 逻辑删除
     * @param id
     * @return
     */
    int removeById(Serializable id);

    /**
     * 逻辑删除
     * @param columnMap
     * @return
     */
    int removeByMap(@Param("cm") Map<String, Object> columnMap);

    /**
     * 逻辑删除
     * @param wrapper
     * @return
     */
    int remove(@Param("ew") Wrapper<T> wrapper);

    /**
     * 逻辑删除
     * @param idList
     * @return
     */
    int removeBatchIds(@Param("coll") Collection<? extends Serializable> idList);
}
